#include "fractii.h"
fractie::fractie(int a,int b)
	{
	(*this).x=a;
	(*this).y=b;
	}
int fractie::getX()
	{
	return (*this).x;
	}
int fractie::getY()
	{
	return (*this).y;
  }
int fractie::cmmdc(int a,int b)
	{
  if(b>a)
  	{
    int t=a;
    a=b;
    b=t;
    }
    while(b!=0)
  	  {
 		   int m=a%b;
  		 a=b;
   		 b=m;
    	}
	return a;
	}
void fractie::simplifica()
	{
	int d=(*this).cmmdc(x,y);
	(*this).x=x/d;
	(*this).y=y/d;
	}
fractie fractie::operator+(fractie d)
	{
	int m=(*this).x*d.getY()+d.getX()*(*this).y;
	int n=(*this).y*d.getY();
	fractie rez=fractie(m,n);
	rez.simplifica();
	return rez;
	}
fractie fractie::operator-(fractie d)
  {
	int m=(*this).x*d.getY()-d.getX()*(*this).y;
	int n=(*this).y*d.getY();
	fractie rez=fractie(m,n);
	rez.simplifica();
	return rez;
	}
fractie fractie::operator*(fractie d)
	{
	int m=(*this).x*d.getX();
	int n=(*this).y*d.getY();
	fractie rez=fractie(m,n);
	rez.simplifica();
	return rez;
	}	
fractie fractie::operator/(fractie d)
	{
	int m=d.getY();
	int n=d.getX();
	fractie r=fractie(m,n);
	r.simplifica();
	int p=(*this).x*r.getX();
	int q=(*this).y*r.getY();
	fractie rez=fractie(p,q);
	rez.simplifica();
	return rez;
	}
	
ostream& operator<<(ostream& cout,fractie D)
	{
	std::cout<<D.getX()<<"/"<<D.getY();
	return cout;
	}
